#(web)请写出以下页面的自动化代码操作（写出代码注释）【30分】

# <section aaa="frame-wrap">
#   <iframe src="https://www.taobao.com" name="navlframe1"></iframe>
#   <iframe src="https://www.tmall.com" name="navlframe2"></iframe>
#   <iframe src="https://www.suning.com" name="navlframe3"></iframe>
# </section>
# 要求用到显示等待。
#
# 当前页面由iframe页面构成。左侧为主页面(A)，右侧为以上三个iframe页面组成(B)。
# 跳入 name="navlframe2" 的内嵌页面，在输入框输入“棉衣”，然后点击搜索。浏览器在当面页面会显示搜索的内容（浏览器不会新开网页），然后再回退到原来页面。
# 搜索按钮：(By.XPATH, '//*[@id="J_TSearchForm"]/div[1]/button')
# 输入框：By.NAME, "navlframe2"
# 回退到原来页面后，在点击苏宁。浏览器会重新打开一个页面，不关闭当前页面。然后再回到初始浏览器页面。
# 苏宁商城：By.XPATH, '/html/body/div/aside/ul/li[3]/a'



import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器对象（请确保 chromedriver 已配置在系统 PATH 中）
driver = webdriver.Chrome()

try:
    # 1. 打开本地 HTML 页面
    driver.get("file:///D:/github/python/6_19/4.html")  # 替换为你的实际文件路径

    # 获取主页面窗口句柄
    main_window = driver.current_window_handle

    # 2. 显式等待 name="navIframe2" 的 iframe 出现
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "navIframe2"))
    )

    # 3. 切换到 name="navlframe2" 的 iframe 页面
    driver.switch_to.frame("navIframe2")

    # 4. 在输入框输入“棉衣”，使用 NAME 定位（注意：此处是网页内的搜索框，不是 iframe 标签本身）
    search_input = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.NAME, "q"))  # 淘宝/天猫搜索框的 selector
    )
    search_input.send_keys("棉衣")

    time.sleep(5)
    # 5. 点击搜索按钮（XPath 定位）aaa="btn-search.tb-bg"
    search_button = driver.find_element(By.CLASS_NAME, 'btn-search.tb-bg')
    search_button.click()

    # 6. 等待搜索结果页面加载完成（可用 title 或 URL 判断）
    WebDriverWait(driver, 10).until(
        EC.title_contains("棉衣")
    )

    # 7. 回退到原来的页面（iframe 的父页面）
    driver.back()

    # 8. 等待主页面重新加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "body"))
    )

    # 9. 点击苏宁商城链接（XPath 定位）
    suning_link = driver.find_element(By.XPATH, '/html/body/div/aside/ul/li[3]/a')
    suning_link.click()

    # 10. 获取当前所有窗口句柄，切换回初始窗口
    for handle in driver.window_handles:
        if handle != main_window:
            driver.switch_to.window(handle)
            driver.close()  # 关闭新打开的标签页
        
    # 11. 切换回主窗口
    driver.switch_to.window(main_window)

finally:
    # 12. 最后关闭浏览器
    driver.quit()
